package com.greensecurity.sim.util;

import cn.hutool.core.codec.Base64;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.IOException;
@Slf4j
public class SaveImageUtil {

    /**
     * 用户的当前工作目录
     */
    public static String basePath;
    /**
     *图片临时保存目录
     */
    public static String imgTemPth;
    /**
     * 生成的简报临时保存目录
     */
    public static String reportTemPath;
    /**
     * 简报模板路径
     */
    public static String templatePath="static/word/";

    /**
     * cad图的上传路径
     */
    public static String cadSavePath="";

    static {
        basePath=System.getProperty("user.dir");
        imgTemPth=basePath+ File.separator+"img";
        reportTemPath=basePath+File.separator+"report";
        if (System.getProperty("os.name").toLowerCase().startsWith("win")){
            cadSavePath="E:/";
        }else{
            cadSavePath="/application/";
        }

        if (!FileUtil.exist(imgTemPth)){
            FileUtil.mkdir(imgTemPth);
        }
        if (!FileUtil.exist(reportTemPath)){
            FileUtil.mkdir(reportTemPath);
        }
        if (!FileUtil.exist(cadSavePath)){
            FileUtil.mkdir(cadSavePath);
        }

    }
    /**
     * 保存图片
     * @param imgUrl
     * @param path 保存图片路径
     * @return
     */
    public static String saveImage(String imgUrl,String path){
        if (StrUtil.isEmpty(imgUrl)){
            return StrUtil.EMPTY;
        }
        return saveImage(Base64.decode(imgUrl),path);
    }
    /**
     * 保存图片
     * @param buffer
     * @param path 保存图片路径
     * @return
     */
    public static String saveImage(byte[] buffer,String path){
        BufferedOutputStream out=null;
        try {
            if (StrUtil.isEmpty(path)){
                path=StrUtil.format("{}/{}.png",imgTemPth,System.currentTimeMillis());
            }
            if (ArrayUtil.isEmpty(buffer)){
                return StrUtil.EMPTY;
            }
            out = FileUtil.getOutputStream(path);
            out.write(buffer);
        } catch (IOException e) {
            log.error("保存图片错误",e);
            path=StrUtil.EMPTY;
        }finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return path;
    }
}
